// pages/search/search.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isSelect: false,
    placeholderText: '请输入您要搜索的内容',
    searchKeyword: '', //搜索关键词
    searchCategory: '',  //搜索主题
    history: [], // 存储搜索历史
    // searchResults: [], // 存储查询结果
    showResults: false, // 控制查询结果的显示


     searchResultsExpert: [], // 存储专家搜索结果
  searchResultsArticle: [], // 存储文章搜索结果
  searchResultsTest: [], // 存储测试搜索结果
  searchResultsQuestion: [], // 存储提问搜索结果
  

  },
  back() {
    if (this.data.showResults) {
      this.setData({
        showResults: false,
      });
    } else {
      wx.switchTab({
        url: '../index/index',
      });
    }
  },
  // 显示搜索历史
  showHistory: function() {
    this.setData({
      isSelect: true
    });
  },

  // 隐藏搜索历史
  hideHistory: function() {
    this.setData({
      isSelect: false
    });
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 页面加载时，从本地存储获取搜索历史
    const history = wx.getStorageSync('searchHistory') || [];
    this.setData({
      history: history.slice(0, 3) // 最多显示三条历史记录
    });
    console.log("历史记录");
    console.log(history);
  },

  // 选择搜索类别
  selectCategory: function(event) {
    const category = event.currentTarget.dataset.category;
    this.setData({
      searchCategory: category,
      placeholderText: `请输入${category}`,
      searchResultsExpert: [],
      searchResultsArticle: [],
      searchResultsTest: [],
      searchResultsQuestion: [],
      showResults: false,
    });
  },

  // 输入框值变化
  onInput: function(event) {
    this.setData({
      searchKeyword: event.detail.value
    });
  }, 
//展示历史记录
  showHistory: function() {
    this.setData({
      isSelect: true
    });
  },
//隐藏历史记录
  hideHistory: function() {
    this.setData({
      isSelect: false
    });
  },
// 清空历史记录
  clearHistory: function() {
    wx.removeStorageSync('searchHistory');
    this.setData({
      history: []
    });
  },
  
 // 选择历史记录
selectHistory: function(event) {
    const keyword = event.currentTarget.dataset.keyword;
    this.setData({
      searchKeyword: keyword
    });
    this.hideHistory();
    this.search(); // 调用搜索方法
  },


// 修改代码

  // 搜索方法
  search: function() {
    const { searchKeyword } = this.data;
    if (searchKeyword.trim() === '') {
      wx.showToast({
        title: '请输入搜索关键词',
        icon: 'none'
      });
      return;
    }

    // 更新搜索历史
    let history = wx.getStorageSync('searchHistory') || [];
    if (!history.includes(searchKeyword)) {
      history.unshift(searchKeyword); // 将新关键词添加到历史记录开头
      if (history.length > 3) {
        history.pop(); // 保持历史记录最多三条
      }
      wx.setStorageSync('searchHistory', history);
    }


  // 如果没有选择搜索类别，则同时发送四个请求
  if (!this.data.searchCategory) {
    this.sendRequest('专家关键词/擅长', this.getRequestUrl('专家关键词/擅长', searchKeyword));
    this.sendRequest('文章关键词', this.getRequestUrl('文章关键词', searchKeyword));
    this.sendRequest('测试关键词', this.getRequestUrl('测试关键词', searchKeyword));
    this.sendRequest('提问关键词', this.getRequestUrl('提问关键词', searchKeyword));
  } else {
    // 如果选择了搜索类别，则只发送一个请求
    this.sendRequest(this.data.searchCategory, this.getRequestUrl(this.data.searchCategory, searchKeyword));
  }
},

  // 发送请求的方法
  sendRequest: function(category, url) {
      console.log("这里是url");
      console.log(url);
        // 定义类别到字段名的映射关系
  const categoryToFieldMap = {
    '专家关键词/擅长': 'Expert',
    '文章关键词': 'Article',
    '测试关键词': 'Test',
    '提问关键词': 'Question'
  };
    // 获取对应的英文字段名
    const fieldName = categoryToFieldMap[category];

    // 根据类别构建请求参数
    let params = {};
    if (category === '文章关键词') {
        // 文章关键词搜索需要传递对象以及页码参数
 // 对于文章关键词搜索，URL中已经包含了所有必要的参数，因此params可以为空
    params = { };
    } else {
        // 其他类别搜索的参数构建方式
        params = {
            keyword: this.data.searchKeyword
        };
    }


    wx.request({
      url: url,
      method: 'GET',
      data: params, // 将构建的参数传递给后端接口
      success: (res) => {
        console.log(`成功了 - ${category}`);
        console.log(res.data);

        if (category === '文章关键词') {
            this.setData({
              [`searchResults${fieldName}`]: res.data.data.list // 假设后端返回的data对象中包含list数组
            });
          } else {
            // 其他类别直接使用data.data
            this.setData({
              [`searchResults${fieldName}`]: res.data.data
            });
          }
        // this.setData({
        //   [`searchResults${fieldName}`]: res.data.data // 根据category动态设置数据
        // });
        this.checkResultsToShow();
      },
      fail: (err) => {
        console.log(`请求失败 - ${category}`);
        console.log(err);
      },
    });
  },
// 检查结果并显示
checkResultsToShow: function() {
    const { searchResultsExpert, searchResultsArticle, searchResultsTest, searchResultsQuestion } = this.data;
    const hasResults = searchResultsExpert.length > 0 ||
                       searchResultsArticle.length > 0 ||
                       searchResultsTest.length > 0 ||
                       searchResultsQuestion.length > 0;
  
    if (hasResults) {
      this.setData({
        showResults: true
      });
    } else {
      this.setData({
        showResults: false
      });
      wx.showToast({
        title: '未找到相关结果',
        icon: 'none'
      });
    }
  },

  // 获取请求的URL
  getRequestUrl: function(category, keyword) {
    switch (category) {
      case '专家关键词/擅长':
        return `http://localhost:8085/consultant/findConsultantByCondition?realname=${encodeURIComponent(keyword)}`;
      case '文章关键词':
        return `http://localhost:8085/paychologyknoeledge?knowledgeId=&title=${encodeURIComponent(keyword)}&content&publishTime&imageUrl&consultantId&pageNum=1&pageSize=10`;
      case '测试关键词':
        return `http://localhost:8085/psychologicalassessment/search?title=${encodeURIComponent(keyword)}`;
      case '提问关键词':
        return `http://localhost:8085/psychologyquestion/mohuMember?questionName=${encodeURIComponent(keyword)}&questionContent&memberName`;
        // http://localhost:8085/psychologyquestion/mohuMember?questionName=%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E8%83%BD%E6%9C%89%E4%B8%80%E7%99%BE%E4%B8%87&questionContent&memberName
      default:
        return '';
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

    console.log("数组数据");
console.log(searchResultsExpert.data);
console.log(searchResultsArticle.data);
console.log(searchResultsTest.data);
console.log(searchResultsQuestion.data);
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})